package com.itheima.reggie.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.reggie.common.CustomException;
import com.itheima.reggie.entity.Category;
import com.itheima.reggie.entity.Dish;
import com.itheima.reggie.entity.Setmeal;
import com.itheima.reggie.mapper.CategoryMapper;
import com.itheima.reggie.service.CategoryService;
import com.itheima.reggie.service.DishService;
import com.itheima.reggie.service.SetmealService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.concurrent.CompletionException;

@Service
public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService{
    @Autowired
    private  CategoryMapper categoryMapper;
    @Autowired
    private  DishService dishService;
    @Autowired
    private SetmealService setmealService;
    @Override
    public void remove(Long categoryId) {
        //判断，判断是否该分类下有菜品或者套餐
        LambdaQueryWrapper<Dish>dishWrapper= new LambdaQueryWrapper<>();
        dishWrapper.eq(Dish::getCategoryId,categoryId);
        int dishCountWithCid = dishService.count(dishWrapper);
        if(dishCountWithCid>0){
            //有该分类下的菜品数据
            //抛出异常
            throw new CustomException("该分类下有菜品，不能删除！");
        }
        LambdaQueryWrapper<Setmeal> dishWrapper1= new LambdaQueryWrapper<>();
        dishWrapper1.eq(Setmeal::getCategoryId,categoryId);
        int setmealWithCid = setmealService.count(dishWrapper1);
        if(setmealWithCid>0){
            throw new CustomException("该分类下有套餐，不能删除！");
        }
        //上述条件均不成立
        categoryMapper.deleteById(categoryId);

    }
}
